package model

import (
	"github.com/hajimehoshi/ebiten/v2"
	"github.com/hajimehoshi/ebiten/v2/ebitenutil"
	"log"
	"myGame/src/Config"
)

type Beijing struct {
	Image []*ebiten.Image
	X     float64
	State float64
}

func NewBeijing(screenWidth, screenHeight int) *Beijing {
	img1, _, err := ebitenutil.NewImageFromFile("./src/images/beijing.png")
	if err != nil {
		log.Fatal(err)
	}
	img2, _, err := ebitenutil.NewImageFromFile("./src/images/beijing.png")
	if err != nil {
		log.Fatal(err)
	}

	//width, _ := img1.Size() //1343但是图片显式 1280
	beijing := &Beijing{
		Image: []*ebiten.Image{img1, img2},
		X:     0,
		State: 0,
	}
	return beijing
}

// 单独书写一个背景的方法，方便后续管理
func (beijing *Beijing) Draw(screen *ebiten.Image, cfg *Config.Config, r *Realm) {
	//清空画布
	screen.Fill(cfg.BgColor)
	//把背景图像设置为如同人物一样的方法，把它给画出来
	op := &ebiten.DrawImageOptions{}
	//   让背景图片实现以BgSpeed的速度，缓慢移动，
	//  让背景图达到第二章的时候，把背景图片再悄悄的换成第一张
	beijing.X -= cfg.ObstacleSpeed
	//这里如果用==的话，如果速度相减的过程中，某一帧把这个坐标给跳过去了，呢么这个背景图也就不会再出现了
	if beijing.X <= -1280 {
		beijing.X = 0
	}
	op.GeoM.Translate(beijing.X, 0)
	//绘制背景图像
	screen.DrawImage(beijing.Image[0], op)

	//画第二个画布   把第二给画布给放置到第一个画布的右边
	op = &ebiten.DrawImageOptions{}
	op.GeoM.Translate(beijing.X+1280, 0)
	screen.DrawImage(beijing.Image[0], op)

}
